package com.prj.ufdm.cloud.zipken.api;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * DESC: 链路跟踪演示Api <br>
 * @author 胡义振
 * @date 2020年2月22日
 */
@RestController
@RequestMapping("/api/zipkin")
public class SleuthZipkinDemoApi {
	
	@Autowired
	private RestTemplate restTemplate;
	
	private String ZIPKIN_GET_LINK1_URL = "http://127.0.0.1:8081/api/zipkin/link1";
	private String ZIPKIN_GET_LINK2_URL = "http://127.0.0.1:8081/api/zipkin/link2";
	private String ZIPKIN_GET_LINK3_URL = "http://127.0.0.1:8081/api/zipkin/link3";
	private String TEST_FIRST_DEMO_URL = "http://192.168.128.129:8090/api/test/first/demo?name=zhangsan";
	
	private String TEST_GET_NEWS_DEMO_URL ="http://192.168.128.129:8090/api/test/get/news/demo"; 
	
	
	/**
	 * DESC: 调用 MS-TEST服务（MS-TEST 服务 调用 MS-NEWS 服务）
	 * @auther 胡义振
	 * @date 2020年2月22日
	 * @param name
	 * @return 
	 * @return
	 */
	@RequestMapping("/test/news")
	public String getMsTest(String name) {
		String result = restTemplate.getForObject(TEST_GET_NEWS_DEMO_URL, String.class);
		return result;
	}
	
	/**
	 * DESC: 调用本地 Link1 -> 本地 Link2 -> 本地 Link3 -> MS-TEST 服务
	 * @auther 胡义振
	 * @date 2020年2月22日
	 * @param name
	 * @return 
	 * @return
	 */
	@RequestMapping("/test")
	public String getLinkTest(String name) {
		String result = restTemplate.getForObject(ZIPKIN_GET_LINK1_URL, String.class);
		return result;
	}
	
	/**
	 * DESC: Link1 调用 Link2
	 * @auther 胡义振
	 * @date 2020年2月22日
	 * @param name
	 * @return 
	 * @return
	 */
	@RequestMapping("/link1")
	public String getLinkTest1(String name) {
		String result = restTemplate.getForObject(ZIPKIN_GET_LINK2_URL, String.class);
		return result;
	}
	
	/**
	 * DESC: Link2 调用 Link3
	 * @auther 胡义振
	 * @date 2020年2月22日
	 * @param name
	 * @return 
	 * @return
	 */
	@RequestMapping("/link2")
	public String getLinkTest2() {
		String result = restTemplate.getForObject(ZIPKIN_GET_LINK3_URL, String.class);
		return result;
	}
	
	/**
	 * DESC: Link3 调用 TEST_DEMO 项目
	 * @auther 胡义振
	 * @date 2020年2月22日
	 * @return 
	 * @return
	 */
	@RequestMapping("/link3")
	public String getDemoInfo() {
		String result = restTemplate.getForObject(TEST_FIRST_DEMO_URL, String.class);
		return result;
	}

}
